Advanced Joins এবং Nested Queries

Database Tutorials - ডিবি২ (DB2) DB2 Advanced SQL Techniques |
270
270

DB2 তে Joins এবং Nested Queries এমন দুটি গুরুত্বপূর্ণ কৌশল, যা ডেটাবেসে একাধিক টেবিলের ডেটা একত্রিত এবং জটিল ডেটাবেস কুয়েরি তৈরি করতে ব্যবহৃত হয়। Advanced Joins এবং Nested Queries ব্যবহার করে, আপনি বিভিন্ন ধরনের সম্পর্কিত ডেটা আরও গভীরভাবে বিশ্লেষণ করতে পারেন।

এখানে DB2-তে Advanced Joins এবং Nested Queries এর ব্যবহার এবং এগুলোর কার্যকারিতা ব্যাখ্যা করা হলো।


Advanced Joins

Joins হল একটি SQL কৌশল যা দুটি বা তার বেশি টেবিলের মধ্যে সম্পর্ক স্থাপন করে এবং সম্পর্কিত ডেটা একত্রিত করতে ব্যবহৃত হয়। DB2 তে বিভিন্ন ধরনের Advanced Joins ব্যবহৃত হয় যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SELF JOIN, এবং CROSS JOIN

১. INNER JOIN

INNER JOIN হল সবচেয়ে সাধারণ ধরনের JOIN, যা শুধুমাত্র সেই রেকর্ডগুলি ফেরত দেয়, যেখানে দুটি টেবিলের মধ্যে ম্যাচিং রেকর্ড থাকে।

উদাহরণ:

SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;

এটি employees এবং departments টেবিলের মধ্যে department_id কলামের মাধ্যমে সম্পর্ক স্থাপন করে এবং সেইসব কর্মচারীদের নাম ও বিভাগের নাম ফিরিয়ে দেয়, যাদের department_id ম্যাচ করে।

২. LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN বা LEFT OUTER JOIN দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে, এবং বামপাশের টেবিলের সমস্ত রেকর্ড ফেরত দেয়, এমনকি যদি ডানপাশের টেবিলে মিল না থাকে তাও। যেসব রেকর্ডের ডানপাশের টেবিলে মিল নেই, সেখানে NULL ফেরত আসবে।

উদাহরণ:

SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

এটি employees টেবিলের সমস্ত রেকর্ড ফেরত দিবে, এবং যেখানে departments টেবিলের department_id মেলে, সেখানে বিভাগের নাম প্রদর্শিত হবে। যদি কোন মিল না থাকে, তবে department_name কলামে NULL ফেরত আসবে।

৩. RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN বা RIGHT OUTER JOIN LEFT JOIN এর বিপরীত। এটি ডানপাশের টেবিলের সমস্ত রেকর্ড ফেরত দেয়, এমনকি বামপাশের টেবিলে মিল না থাকলেও। যেখানে মিল না থাকবে সেখানে NULL ফেরত আসবে।

উদাহরণ:

SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;

এটি departments টেবিলের সমস্ত রেকর্ড ফেরত দেবে, এবং যেগুলোর সাথে employees টেবিলের department_id মেলে, সেখানে কর্মচারীর নাম প্রদর্শিত হবে। অন্যথায় employee_id এবং first_name কলামে NULL দেখানো হবে।

৪. FULL OUTER JOIN

FULL OUTER JOIN দুটি টেবিলের সকল রেকর্ড ফেরত দেয়, এবং যেখানে মিল না থাকে সেখানে NULL ফিরিয়ে দেয়।

উদাহরণ:

SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
FULL OUTER JOIN departments
ON employees.department_id = departments.department_id;

এটি employees এবং departments টেবিলের সমস্ত রেকর্ড ফেরত দেবে, যেখানে মিল থাকবে সেখানে সম্পর্কিত তথ্য দেখাবে, আর যেগুলোর মিল নেই সেগুলোর জন্য NULL প্রদর্শিত হবে।

৫. SELF JOIN

SELF JOIN হল একটি টেবিলের মধ্যে সম্পর্ক স্থাপন করা যেখানে একই টেবিলের দুটি রেকর্ডের মধ্যে সম্পর্ক স্থাপন করা হয়। এটি সাধারণত alias ব্যবহার করে করা হয়।

উদাহরণ:

SELECT e1.employee_id, e1.first_name, e2.first_name AS manager_name
FROM employees e1
JOIN employees e2
ON e1.manager_id = e2.employee_id;

এটি employees টেবিলের মধ্যে এমন একটি সম্পর্ক তৈরি করে যেখানে এক কর্মচারী অন্য কর্মচারীকে manager_id দ্বারা পরিচালনা করছে।

৬. CROSS JOIN

CROSS JOIN দুটি টেবিলের মধ্যে সমস্ত সম্ভাব্য কম্বিনেশন ফেরত দেয়, অর্থাৎ এটি Cartesian Product তৈরি করে। এতে কোন শর্তের ভিত্তিতে সম্পর্ক স্থাপন করা হয় না।

উদাহরণ:

SELECT employees.first_name, departments.department_name
FROM employees
CROSS JOIN departments;

এটি employees এবং departments টেবিলের মধ্যে সমস্ত সম্ভাব্য কম্বিনেশন দেখাবে।


Nested Queries (Subqueries)

Nested Queries বা Subqueries হল কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করা। এটি সাধারণত WHERE, FROM, SELECT, বা HAVING ক্লজে ব্যবহৃত হয় এবং এটি ডেটাবেসের মধ্যে আরও জটিল এবং শক্তিশালী অনুসন্ধান করার জন্য ব্যবহৃত হয়।

১. Subquery in WHERE Clause

WHERE ক্লজে Subquery ব্যবহার করে, আপনি মূল কুয়েরির ফলাফল নির্ধারণ করতে পারেন।

উদাহরণ:

SELECT first_name, last_name
FROM employees
WHERE department_id = (
  SELECT department_id 
  FROM departments 
  WHERE department_name = 'Sales'
);

এটি Sales বিভাগের কর্মচারীদের নাম এবং পদবি ফেরত দেবে। এখানে ভিতরের কুয়েরি প্রথমে Sales বিভাগের department_id নির্বাচন করবে এবং বাইরের কুয়েরি সেই বিভাগের কর্মচারীদের নাম ফিরিয়ে দেবে।

২. Subquery in FROM Clause

FROM ক্লজে Subquery ব্যবহার করে আপনি একটি ভার্চুয়াল টেবিল তৈরি করতে পারেন এবং তারপরে সেটির উপর কাজ করতে পারেন।

উদাহরণ:

SELECT department_name, avg_salary
FROM (
    SELECT department_id, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department_id
) AS department_avg_salary;

এখানে প্রথমে একটি সাবকুয়েরি employees টেবিলের department_id অনুযায়ী গড় বেতন বের করবে এবং তারপরে বাইরের কুয়েরি সেই ফলাফলকে প্রদর্শন করবে।

৩. Correlated Subquery

Correlated Subquery এমন একটি সাবকুয়েরি যা বাইরের কুয়েরির প্রতিটি রেকর্ডের জন্য এক্সিকিউট হয়। এখানে বাইরের কুয়েরি সাবকুয়েরির মধ্যে থাকা মানকে ব্যবহার করে।

উদাহরণ:

SELECT employee_id, first_name
FROM employees e
WHERE salary > (
  SELECT AVG(salary)
  FROM employees
  WHERE department_id = e.department_id
);

এখানে বাইরের কুয়েরি employees টেবিলের প্রতিটি কর্মচারীর জন্য, তাদের বিভাগের গড় বেতনের চেয়ে বেশি বেতন পাওয়া কর্মচারীদের ফিরিয়ে দেবে।


সারসংক্ষেপ

Advanced Joins এবং Nested Queries DB2 তে ডেটাবেসের মধ্যে সম্পর্ক স্থাপন এবং জটিল অনুসন্ধান পরিচালনা করার জন্য ব্যবহৃত শক্তিশালী টেকনিক। Advanced Joins এর মাধ্যমে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করা হয়, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SELF JOIN, এবং CROSS JOINNested Queries বা Subqueries কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করে আরও উন্নত ডেটা অনুসন্ধান করতে সাহায্য করে। এই কৌশলগুলি DB2 তে ডেটা ম্যানিপুলেশন এবং বিশ্লেষণকে আরও সহজ এবং কার্যকরী করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion